package array;

import java.util.Arrays;

public class 有序数组的平方977 {

    public static int[] sortedSquares(int[] nums) {
        // 1. 暴力解法，遍历平方后，排序
//        int length = nums.length;
//        for (int i = 0; i < length; i++) {
//            nums[i] = nums[i] * nums[i];
//        }
//
//        Arrays.sort(nums);
//        return nums;

        // TODO 双指针
        int right = nums.length - 1;
        int left = 0;
        // 新的数组
        int[] result = new int[nums.length];

        int index = result.length - 1;
        // 遍历相乘大的值从右往左放在新的数组中
        while (left <= right) {
            if (nums[left] * nums[left] > nums[right] * nums[right]) {
                result[index--] = nums[left] * nums[left];
                ++left;
            } else {
                result[index--] = nums[right] * nums[right];
                --right;
            }
        }
        return result;
    }

    public static void main(String[] args) {
        int[] nums = {-4, -1, 0, 3, 10};
        sortedSquares(nums);
        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }

    }
}
